package com.mmall.concurerency.singleton;

import com.mmall.concurerency.annoations.NoThreadSafe;
import com.mmall.concurerency.annoations.NotRecommend;

/**
 * 单例懒汉模式
 * 是在第一次使用的时候进行创建
 */
@NoThreadSafe
@NotRecommend
public class SingletonExample3 {
    //私有构造函数
    public SingletonExample3() {

    }
    //单例对象
    private static SingletonExample3 singletonExample3 =null;
    //静态的工厂方法
    public  static synchronized SingletonExample3 getInstance(){
        //单线程是没有问题的，但是是多线程是有问题，当2个线程同时访问的时候，都为空。
        if(singletonExample3 == null){
            singletonExample3 = new SingletonExample3();
        }
        return singletonExample3;
    }
}

